home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / mfd / da903x.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  5.8 KB  |  202 lines

  1. #ifndef __LINUX_PMIC_DA903X_H
  2. #define __LINUX_PMIC_DA903X_H
  3.  
  4. /* Unified sub device IDs for DA9030/DA9034 */
  5. enum {
  6.     DA9030_ID_LED_1,
  7.     DA9030_ID_LED_2,
  8.     DA9030_ID_LED_3,
  9.     DA9030_ID_LED_4,
  10.     DA9030_ID_LED_PC,
  11.     DA9030_ID_VIBRA,
  12.     DA9030_ID_WLED,
  13.     DA9030_ID_BUCK1,
  14.     DA9030_ID_BUCK2,
  15.     DA9030_ID_LDO1,
  16.     DA9030_ID_LDO2,
  17.     DA9030_ID_LDO3,
  18.     DA9030_ID_LDO4,
  19.     DA9030_ID_LDO5,
  20.     DA9030_ID_LDO6,
  21.     DA9030_ID_LDO7,
  22.     DA9030_ID_LDO8,
  23.     DA9030_ID_LDO9,
  24.     DA9030_ID_LDO10,
  25.     DA9030_ID_LDO11,
  26.     DA9030_ID_LDO12,
  27.     DA9030_ID_LDO13,
  28.     DA9030_ID_LDO14,
  29.     DA9030_ID_LDO15,
  30.     DA9030_ID_LDO16,
  31.     DA9030_ID_LDO17,
  32.     DA9030_ID_LDO18,
  33.     DA9030_ID_LDO19,
  34.     DA9030_ID_LDO_INT,    /* LDO Internal */
  35.  
  36.     DA9034_ID_LED_1,
  37.     DA9034_ID_LED_2,
  38.     DA9034_ID_VIBRA,
  39.     DA9034_ID_WLED,
  40.     DA9034_ID_TOUCH,
  41.  
  42.     DA9034_ID_BUCK1,
  43.     DA9034_ID_BUCK2,
  44.     DA9034_ID_LDO1,
  45.     DA9034_ID_LDO2,
  46.     DA9034_ID_LDO3,
  47.     DA9034_ID_LDO4,
  48.     DA9034_ID_LDO5,
  49.     DA9034_ID_LDO6,
  50.     DA9034_ID_LDO7,
  51.     DA9034_ID_LDO8,
  52.     DA9034_ID_LDO9,
  53.     DA9034_ID_LDO10,
  54.     DA9034_ID_LDO11,
  55.     DA9034_ID_LDO12,
  56.     DA9034_ID_LDO13,
  57.     DA9034_ID_LDO14,
  58.     DA9034_ID_LDO15,
  59. };
  60.  
  61. /*
  62.  * DA9030/DA9034 LEDs sub-devices uses generic "struct led_info"
  63.  * as the platform_data
  64.  */
  65.  
  66. /* DA9030 flags for "struct led_info"
  67.  */
  68. #define DA9030_LED_RATE_ON    (0 << 5)
  69. #define DA9030_LED_RATE_052S    (1 << 5)
  70. #define DA9030_LED_DUTY_1_16    (0 << 3)
  71. #define DA9030_LED_DUTY_1_8    (1 << 3)
  72. #define DA9030_LED_DUTY_1_4    (2 << 3)
  73. #define DA9030_LED_DUTY_1_2    (3 << 3)
  74.  
  75. #define DA9030_VIBRA_MODE_1P3V    (0 << 1)
  76. #define DA9030_VIBRA_MODE_2P7V    (1 << 1)
  77. #define DA9030_VIBRA_FREQ_1HZ    (0 << 2)
  78. #define DA9030_VIBRA_FREQ_2HZ    (1 << 2)
  79. #define DA9030_VIBRA_FREQ_4HZ    (2 << 2)
  80. #define DA9030_VIBRA_FREQ_8HZ    (3 << 2)
  81. #define DA9030_VIBRA_DUTY_ON    (0 << 4)
  82. #define DA9030_VIBRA_DUTY_75P    (1 << 4)
  83. #define DA9030_VIBRA_DUTY_50P    (2 << 4)
  84. #define DA9030_VIBRA_DUTY_25P    (3 << 4)
  85.  
  86. /* DA9034 flags for "struct led_info" */
  87. #define DA9034_LED_RAMP        (1 << 7)
  88.  
  89. /* DA9034 touch screen platform data */
  90. struct da9034_touch_pdata {
  91.     int    interval_ms;    /* sampling interval while pen down */
  92.     int    x_inverted;
  93.     int    y_inverted;
  94. };
  95.  
  96. struct da903x_subdev_info {
  97.     int        id;
  98.     const char    *name;
  99.     void        *platform_data;
  100. };
  101.  
  102. struct da903x_platform_data {
  103.     int num_subdevs;
  104.     struct da903x_subdev_info *subdevs;
  105. };
  106.  
  107. /* bit definitions for DA9030 events */
  108. #define DA9030_EVENT_ONKEY        (1 << 0)
  109. #define    DA9030_EVENT_PWREN        (1 << 1)
  110. #define    DA9030_EVENT_EXTON        (1 << 2)
  111. #define    DA9030_EVENT_CHDET        (1 << 3)
  112. #define    DA9030_EVENT_TBAT        (1 << 4)
  113. #define    DA9030_EVENT_VBATMON        (1 << 5)
  114. #define    DA9030_EVENT_VBATMON_TXON    (1 << 6)
  115. #define    DA9030_EVENT_CHIOVER        (1 << 7)
  116. #define    DA9030_EVENT_TCTO        (1 << 8)
  117. #define    DA9030_EVENT_CCTO        (1 << 9)
  118. #define    DA9030_EVENT_ADC_READY        (1 << 10)
  119. #define    DA9030_EVENT_VBUS_4P4        (1 << 11)
  120. #define    DA9030_EVENT_VBUS_4P0        (1 << 12)
  121. #define    DA9030_EVENT_SESS_VALID        (1 << 13)
  122. #define    DA9030_EVENT_SRP_DETECT        (1 << 14)
  123. #define    DA9030_EVENT_WATCHDOG        (1 << 15)
  124. #define    DA9030_EVENT_LDO15        (1 << 16)
  125. #define    DA9030_EVENT_LDO16        (1 << 17)
  126. #define    DA9030_EVENT_LDO17        (1 << 18)
  127. #define    DA9030_EVENT_LDO18        (1 << 19)
  128. #define    DA9030_EVENT_LDO19        (1 << 20)
  129. #define    DA9030_EVENT_BUCK2        (1 << 21)
  130.  
  131. /* bit definitions for DA9034 events */
  132. #define DA9034_EVENT_ONKEY        (1 << 0)
  133. #define DA9034_EVENT_EXTON        (1 << 2)
  134. #define DA9034_EVENT_CHDET        (1 << 3)
  135. #define DA9034_EVENT_TBAT        (1 << 4)
  136. #define DA9034_EVENT_VBATMON        (1 << 5)
  137. #define DA9034_EVENT_REV_IOVER        (1 << 6)
  138. #define DA9034_EVENT_CH_IOVER        (1 << 7)
  139. #define DA9034_EVENT_CH_TCTO        (1 << 8)
  140. #define DA9034_EVENT_CH_CCTO        (1 << 9)
  141. #define DA9034_EVENT_USB_DEV        (1 << 10)
  142. #define DA9034_EVENT_OTGCP_IOVER    (1 << 11)
  143. #define DA9034_EVENT_VBUS_4P55        (1 << 12)
  144. #define DA9034_EVENT_VBUS_3P8        (1 << 13)
  145. #define DA9034_EVENT_SESS_1P8        (1 << 14)
  146. #define DA9034_EVENT_SRP_READY        (1 << 15)
  147. #define DA9034_EVENT_ADC_MAN        (1 << 16)
  148. #define DA9034_EVENT_ADC_AUTO4        (1 << 17)
  149. #define DA9034_EVENT_ADC_AUTO5        (1 << 18)
  150. #define DA9034_EVENT_ADC_AUTO6        (1 << 19)
  151. #define DA9034_EVENT_PEN_DOWN        (1 << 20)
  152. #define DA9034_EVENT_TSI_READY        (1 << 21)
  153. #define DA9034_EVENT_UART_TX        (1 << 22)
  154. #define DA9034_EVENT_UART_RX        (1 << 23)
  155. #define DA9034_EVENT_HEADSET        (1 << 25)
  156. #define DA9034_EVENT_HOOKSWITCH        (1 << 26)
  157. #define DA9034_EVENT_WATCHDOG        (1 << 27)
  158.  
  159. extern int da903x_register_notifier(struct device *dev,
  160.         struct notifier_block *nb, unsigned int events);
  161. extern int da903x_unregister_notifier(struct device *dev,
  162.         struct notifier_block *nb, unsigned int events);
  163.  
  164. /* Status Query Interface */
  165. #define DA9030_STATUS_ONKEY        (1 << 0)
  166. #define DA9030_STATUS_PWREN1        (1 << 1)
  167. #define DA9030_STATUS_EXTON        (1 << 2)
  168. #define DA9030_STATUS_CHDET        (1 << 3)
  169. #define DA9030_STATUS_TBAT        (1 << 4)
  170. #define DA9030_STATUS_VBATMON        (1 << 5)
  171. #define DA9030_STATUS_VBATMON_TXON    (1 << 6)
  172. #define DA9030_STATUS_MCLKDET        (1 << 7)
  173.  
  174. #define DA9034_STATUS_ONKEY        (1 << 0)
  175. #define DA9034_STATUS_EXTON        (1 << 2)
  176. #define DA9034_STATUS_CHDET        (1 << 3)
  177. #define DA9034_STATUS_TBAT        (1 << 4)
  178. #define DA9034_STATUS_VBATMON        (1 << 5)
  179. #define DA9034_STATUS_PEN_DOWN        (1 << 6)
  180. #define DA9034_STATUS_MCLKDET        (1 << 7)
  181. #define DA9034_STATUS_USB_DEV        (1 << 8)
  182. #define DA9034_STATUS_HEADSET        (1 << 9)
  183. #define DA9034_STATUS_HOOKSWITCH    (1 << 10)
  184. #define DA9034_STATUS_REMCON        (1 << 11)
  185. #define DA9034_STATUS_VBUS_VALID_4P55    (1 << 12)
  186. #define DA9034_STATUS_VBUS_VALID_3P8    (1 << 13)
  187. #define DA9034_STATUS_SESS_VALID_1P8    (1 << 14)
  188. #define DA9034_STATUS_SRP_READY        (1 << 15)
  189.  
  190. extern int da903x_query_status(struct device *dev, unsigned int status);
  191.  
  192.  
  193. /* NOTE: the two functions below are not intended for use outside
  194.  * of the DA9034 sub-device drivers
  195.  */
  196. extern int da903x_write(struct device *dev, int reg, uint8_t val);
  197. extern int da903x_read(struct device *dev, int reg, uint8_t *val);
  198. extern int da903x_update(struct device *dev, int reg, uint8_t val, uint8_t mask);
  199. extern int da903x_set_bits(struct device *dev, int reg, uint8_t bit_mask);
  200. extern int da903x_clr_bits(struct device *dev, int reg, uint8_t bit_mask);
  201. #endif /* __LINUX_PMIC_DA903X_H */
  202.